@tool
extends Resource

## 存储物品的基本信息
class_name Item


## 物品的id（唯一标识）
@export var id: int:
    set(value):
        id = value
        _update_resource_name()

## 物品的名称
@export var name: String:
    set(value):
        name = value
        _update_resource_name()

@export var icon: Texture2D                         ## 物品的图标（小分辨率的材质，用于库存UI界面的显示）
@export var texture: Texture2D                      ## 物品的材质（用于在游戏里显示）
@export_multiline var description: String           ## 物品的描述
@export var can_stacked: bool                       ## 物品在库存UI中是否可以堆叠显示
@export var max_stack_count: int = 1                ## 物品堆叠显示的最大个数
@export var can_sold: bool                          ## 物品是否可以售卖
@export var price: int                              ## 物品的价格


func _to_string() -> String:
    return "
        id: %d,
        name: %s,
        description: %s,
        can_stacked: %s,
        max_stack_count: %d,
        can_sold: %s,
        price: %d
    " % [id, name, description, str(can_stacked), max_stack_count, str(can_sold), price]

func _update_resource_name() -> void:
    resource_name = "%s(%d)" % [name, id]
